package com.itheima.poi_test;

import org.apache.poi.xssf.eventusermodel.XSSFSheetXMLHandler;
import org.apache.poi.xssf.usermodel.XSSFComment;

/**
 * 自定义Sheet基于Sax的解析处理器
 * 每解析一行就处理一行, 避免直接全部加载到内存造成溢出
 */
public class SheetHandler implements XSSFSheetXMLHandler.SheetContentsHandler {

    private PoiEntity entity;

    /**
     * 解析行开始
     */
    public void startRow(int rowNum) {
        if (rowNum > 0){
            entity = new PoiEntity();
        }
    }

    /**
     * 解析行结束
     */
    public void endRow(int rowNum) {
        // 业务处理
        System.out.println(entity);
    }

    /**
     * 解析每一个单元格
     * @param cellReference 单元格列 A B C ...
     * @param value 单元格内容
     * @param xssfComment 批注, 不怎么用
     */
    public void cell(String cellReference, String value, XSSFComment xssfComment) {
        if (entity != null){
            String cellValue = cellReference.substring(0, 1);
            switch (cellValue) {
                case "A":
                    entity.setId(value);
                    break;
                case "B":
                    entity.setBreast(value);
                    break;
                case "C":
                    entity.setAdipocytes(value);
                    break;
                case "D":
                    entity.setNegative(value);
                    break;
                case "E":
                    entity.setStaining(value);
                    break;
                case "F":
                    entity.setSupportive(value);
                    break;
            }
        }
    }

    // 处理头尾
    @Override
    public void headerFooter(String s, boolean b, String s1) {

    }
}
